home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / otohime / src / lib / hisin.asm < prev    next >
Assembly Source File  |  1994-11-16  |  3KB  |  94 lines

  1. ;
  2. ;            1994 1 高速サイン計算
  3. ;
  4.  
  5.     .386p
  6.  
  7.  
  8. ;    SIN
  9. ;input    eax = angle ( rate 10000H = 3.141592…/2 )
  10. ;output    eax = sin ( eax ) * 10000H
  11.  
  12. cseg    segment    dword public use32 'CODE'
  13.     assume    cs:cseg,ds:cseg
  14.  
  15.     public    hiSpeedSin
  16.     db    'hiSpeedSin',10
  17. hiSpeedSin    proc    near
  18.  
  19.     push    ebx
  20.     mov eax,[esp].8        ; 1番目の引数
  21.     mov    edx,eax
  22.     and    edx,30000H
  23.     cmp    edx,10000H
  24.     je    sin01
  25.     cmp    edx,30000H
  26.     je    sin01
  27.     jmp    sin02
  28. sin01:    mov    bx,ax
  29.     mov    ax,0ffffH
  30.     sub    ax,bx
  31. sin02:    and    eax,0ffffH
  32.     call    sin03
  33. sin03:    pop    ecx
  34.     add    ecx,sintb-sin03
  35.     push    eax
  36.     shr    eax,8
  37.     mov    bx,cs:[ecx][eax*2]
  38.     mov    cx,cs:[ecx+2][eax*2]
  39.     and    ebx,0ffffH
  40.     and    ecx,0ffffH
  41.     sub    ecx,ebx
  42.     pop    eax
  43.     and    eax,0ffH
  44.     imul    eax,ecx
  45.     shr    eax,8
  46.     add    eax,ebx
  47.     cmp    edx,20000H
  48.     jb    sin04
  49.     mov    ebx,eax
  50.     xor    eax,eax
  51.     sub    eax,ebx
  52. sin04:
  53.     pop    ebx
  54.     ret
  55.  
  56. sintb dw 00000H,00192H,00324H,004B6H,00648H,007DAH,0096CH,00AFDH
  57.     dw    00C8FH,00E21H,00FB2H,01143H,012D5H,01465H,015F6H,01787H
  58.     dw    01917H,01AA7H,01C37H,01DC6H,01F56H,020E5H,02273H,02402H
  59.     dw    0250FH,0271DH,028AAH,02A37H,02BC3H,02D4FH,02EDBH,03066H
  60.     dw    031F1H,0337BH,03505H,0368EH,03816H,0399EH,03B26H,03CADH
  61.     dw    03E33H,03FB9H,0413EH,042C3H,04447H,045CAH,0474CH,048CEH
  62.     dw    04A4FH,04BD0H,04D4FH,04ECEH,0504DH,051CAH,05347H,054C3H
  63.     dw    0563EH,057B8H,05931H,05AAAH,05C21H,05D98H,05F0EH,06083H
  64.     dw    061F7H,0636AH,064DCH,0664DH,067BDH,0692CH,06A9AH,06C07H
  65.     dw    06D73H,06EDEH,07048H,071B1H,07319H,0747FH,075E5H,07749H
  66.     dw    078ACH,07A0FH,07B64H,07CCFH,07E2EH,07F8DH,080E7H,08242H
  67.     dw    0839BH,084F3H,0864AH,087A0H,088F5H,08A48H,08B99H,08CEAH
  68.     dw    08E39H,08F86H,090D3H,0921EH,09367H,094AFH,095F6H,0973BH
  69.     dw    0987FH,099C1H,09B02H,09C41H,09D7FH,09EBBH,09FF6H,0A12FH
  70.     dw    0A266H,0A39CH,0A4D1H,0A604H,0A735H,0A865H,0A993H,0AABFH
  71.     dw    0ABEAH,0AD13H,0AE3BH,0AF60H,0B085H,0B1A7H,0B2C8H,0B3E6H
  72.     dw    0B504H,0B61FH,0B739H,0B851H,0B967H,0BA7BH,0BB8EH,0BC9FH
  73.     dw    0BDAEH,0BEBBH,0BFC6H,0C0D0H,0C1D7H,0C2DDH,0C3E1H,0C4E3H
  74.     dw    0C5E3H,0C6E1H,0C7DDH,0C8D7H,0C9D0H,0CAC6H,0CBBBH,0CCADH
  75.     dw    0CD9EH,0CE8CH,0CF79H,0D063H,0D14CH,0D232H,0D317H,0D3F9H
  76.     dw    0D4DAH,0D5B8H,0D695H,0D76FH,0D847H,0D91DH,0D9F1H,0DAC3H
  77.     dw    0DB93H,0DC60H,0DD2CH,0DDF5H,0DEBDH,0DF82H,0E045H,0E106H
  78.     dw    0E1C4H,0E281H,0E33BH,0E3F3H,0E4A9H,0E55DH,0E60EH,0E6BDH
  79.     dw    0E76AH,0E815H,0E8BEH,0E964H,0EA08H,0EAAAH,0EB4AH,0EBE7H
  80.     dw    0EC82H,0ED1BH,0EDB1H,0EE45H,0EED7H,0EF67H,0EFF4H,0F07FH
  81.     dw    0F108H,0F18EH,0F212H,0F293H,0F313H,0F390H,0F40AH,0F483H
  82.     dw    0F4F9H,0F56CH,0F5DDH,0F64CH,0F6B9H,0F723H,0F78AH,0F7F0H
  83.     dw    0F852H,0F8B3H,0F911H,0F96DH,0F9C6H,0FA1DH,0FA72H,0FAC4H
  84.     dw    0FB13H,0FB60H,0FBABH,0FBF4H,0FC3AH,0FC7DH,0FCBEH,0FCFDH
  85.     dw    0FD39H,0FD73H,0FDAAH,0FDDFH,0FE12H,0FE42H,0FE6FH,0FE9AH
  86.     dw    0FEC3H,0FEE9H,0FF0DH,0FF2EH,0FF2EH,0FF4DH,0FF83H,0FF9BH
  87.     dw    0FFB0H,0FFC2H,0FFD2H,0FFE0H,0FFEBH,0FFF3H,0FFFAH,0FFFDH
  88.     dw    0FFFFH
  89.  
  90. hiSpeedSin    endp
  91.  
  92. cseg    ends
  93.     end
  94.